package model

import (
	"chat_srv/basic/config"
	"time"
)

// 群聊成员表
type ImGroupMember struct {
	Id             uint      `gorm:"column:id;type:bigint UNSIGNED;comment:主键id;primaryKey;not null;" json:"id"`                             // 主键id
	GroupId        string    `gorm:"column:group_id;type:varchar(64);comment:群组id;not null;" json:"group_id"`                                // 群组id
	UserId         uint      `gorm:"column:user_id;type:bigint UNSIGNED;comment:用户id;not null;" json:"user_id"`                              // 用户id
	Role           uint      `gorm:"column:role;type:tinyint UNSIGNED;comment:角色:1-普通成员 2-管理员 3-群主;not null;default:1;" json:"role"`         // 角色:1-普通成员 2-管理员 3-群主
	MemberNickname string    `gorm:"column:member_nickname;type:varchar(64);comment:群内昵称;default:NULL;" json:"member_nickname"`              // 群内昵称
	JoinedAt       time.Time `gorm:"column:joined_at;type:datetime(3);comment:加群时间;not null;default:CURRENT_TIMESTAMP(3);" json:"joined_at"` // 加群时间
	CreatedAt      time.Time `gorm:"column:created_at;type:datetime(3);not null;default:CURRENT_TIMESTAMP(3);" json:"created_at"`
}

// 设置与数据库映射
func (igm *ImGroupMember) TableName() string {
	return "im_group_member"
}

// 添加群聊成员
func (igm *ImGroupMember) Create() error {
	return config.DB.Create(&igm).Error
}

// 查询群聊成员
func (igm *ImGroupMember) GetImGroupMember(where *ImGroupMember) error {
	return config.DB.Where(where).Limit(1).Find(&igm).Error
}

// 获取群成员
func (igm *ImGroupMember) GetGroupMember(where *ImGroupMember) (groupMember []*ImGroupMember, err error) {
	err = config.DB.Where(where).Find(&groupMember).Error
	return groupMember, err
}

// 查询用户所在群聊
func (igm *ImGroupMember) GetUserGroups(where *ImGroupMember) (groupIds []*ImGroupMember, err error) {
	err = config.DB.Where(where).Find(&groupIds).Error
	return groupIds, err
}
